package com.otitan.la.forest.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.otitan.la.forest.system.dto.AreaDTO;
import com.otitan.la.forest.system.entity.AreaEntity;
import com.otitan.la.forest.system.vo.AreaVO;
import com.otitan.webapp.framework.basepro.model.DataResult;
import org.springframework.validation.BindingResult;

import java.util.List;

/**
 * 行政区划表
 *
 * @author jiacs
 * @email xxx
 * @date 2020-10-09 15:04:19
 */
public interface AreaService extends IService<AreaEntity> {
    /**
     * 新增
     * @return
     */
    DataResult add(AreaEntity area, BindingResult bindingResult);

    /**
     * 批量删除
     * @return
     */
    DataResult batchDelete(List<String> ids);

    /**
     * 修改
     * @return
     */
    DataResult editor(AreaEntity area, BindingResult bindingResult);

    /**
     * 列表查询（分页）
     * @return
     */
    DataResult findPageData(long page, long size, AreaDTO area);

    /**
     * 根据ID查询
     * @return
     */
    DataResult findOne(String id);

    /**
    * 获取行政区划树
    * @author Sunke
    * @param
    * @return java.util.List<com.otitan.la.forest.system.vo.AreaVO>
    * @exception
    * @date 2020/10/13 0013 17:08
    */
    List<AreaVO> getAreaTree();

    DataResult makeAreaUneffect(String id);

    /**
     * 同步行政区划到 redis
     * @author jiachangsen
     * @param []
     * @return void
     * @exception 
     * @date 2020/10/16 10:22
     */
    void saveToRedis();


    /**
     * @Description:    通过父级编码查询子地区
     * @Author:        wangqingsong
     * @exception          [parentCode]
     * @return             com.otitan.webapp.framework.basepro.model.DataResult
     * @CreateDate:     2020/10/17 23:59
     */
    DataResult findCodeByParent(String parentCode);

    /**
     * 获取行政区划树（新增组织机构用）
     * @author jiachangsen
     * @param []
     * @return com.otitan.webapp.framework.basepro.model.DataResult<java.util.List<com.otitan.la.forest.system.vo.AreaVO>>
     * @exception
     * @date 2020/10/22 09:07
     */
    DataResult<List<AreaVO>> findAreaTreeByTwoLevels();
}

